package in.controller.handler; import android.app.Fragment; import com.google.gson.JsonObject; import in.controller.handler.base.ResponseHandler; import in.controller.handler.base.ResponseListener; import in.lib.utils.Debug; import in.model.User; import in.rob.client.fragment.AuthenticationFragment; import lombok.Getter; public class AuthenticationHandler extends ResponseHandler { @Getter private User user; @Override public AuthenticationFragment getFragment() { return (AuthenticationFragment)super.getFragment(); } @Override public void onSuccess() { if (getContent() != null) { JsonObject tokenObject = getContent().getAsJsonObject().get("token").getAsJsonObject(); JsonObject userObject = tokenObject.get("user").getAsJsonObject(); this.user = new User().createFrom(userObject); this.user.setToken(getContent().getAsJsonObject().get("access_token").getAsString()); } } @Override public void onFinish(boolean failed) { if (failed) { Debug.out("Response failed"); Debug.out(getConnectionInfo()); Debug.out(getContent()); if (getFragment() != null) { JsonObject errorObject = getContent().getAsJsonObject(); getFragment().handleFailure(errorObject.get("error_slug").getAsString(), errorObject.get("error").getAsString()); detachResponse(); } } else { if (getFragment() != null) { ((ResponseListener)getFragment()).handleResponse(getUser()); detachResponse(); } else { Debug.out("Waiting for fragment to reattach"); setOnFragmentAttachedListener(new OnFragmentAttachedListener() { @Override public void onFragmentAttached(Fragment fragment) { ((ResponseListener)getFragment()).handleResponse(getUser()); setOnFragmentAttachedListener(null); detachResponse(); } }); } } } }